batctl: Dynamically select header format in netlink_print_neighbors 1081/head
authorSven Eckelmann <[email protected]>
Tue, 15 Oct 2024 19:27:37 +0000 (21:27 +0200)
committerSven Eckelmann <[email protected]>
Tue, 15 Oct 2024 19:27:37 +0000 (21:27 +0200)
The netlink_print_neighbors() function previously used a static header
format, which did not account for variations between the neighbor list
output from different BATMAN routing algorithms (BATMAN_IV vs. BATMAN_V).

This change ensures that the table header output in `batctl n` is accurate
for both BATMAN routing algorithms.

Signed-off-by: Sven Eckelmann <[email protected]>
batctl/Makefile
batctl/patches/0007-batctl-Dynamically-select-header-format-in-netlink_p.patch [new file with mode: 0644]

index 4cb336b2c016be86e47d2aeae10088a62f87f6cb..88bfd3972e22c0fe5cdb87491a2f9a9648b2e8a3 100644 (file)
@@ -4,7 +4,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=batctl
 PKG_VERSION:=2023.1
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://downloads.open-mesh.org/batman/releases/batman-adv-$(PKG_VERSION)
diff --git a/batctl/patches/0007-batctl-Dynamically-select-header-format-in-netlink_p.patch b/batctl/patches/0007-batctl-Dynamically-select-header-format-in-netlink_p.patch
new file mode 100644 (file)
index 0000000..a0814cd
--- /dev/null
@@ -0,0 +1,55 @@
+From: Noah Peterson <[email protected]>
+Date: Tue, 10 Sep 2024 13:22:02 -0600
+Subject: batctl: Dynamically select header format in netlink_print_neighbors
+
+The netlink_print_neighbors() function previously used a static header
+format, which did not account for variations between the neighbor list
+output from different BATMAN routing algorithms (BATMAN_IV vs. BATMAN_V).
+
+This change ensures that the table header output in `batctl n` is accurate
+for both BATMAN routing algorithms.
+
+Signed-off-by: Noah Peterson <[email protected]>
+Signed-off-by: Sven Eckelmann <[email protected]>
+Origin: upstream, https://git.open-mesh.org/batctl.git/commit/649456d9d00cf701eb35cee1c8c5442752c70613
+
+--- a/neighbors.c
++++ b/neighbors.c
+@@ -6,6 +6,7 @@
+  * License-Filename: LICENSES/preferred/GPL-2.0
+  */
++#include <errno.h>
+ #include <net/if.h>
+ #include <netinet/if_ether.h>
+ #include <netlink/netlink.h>
+@@ -119,9 +120,28 @@ static int netlink_print_neighbors(struc
+                                  int read_opts, float orig_timeout,
+                                  float watch_interval)
+ {
++      char *header = NULL;
++      char *info_header;
++
++      /* only parse routing algorithm name */
++      last_err = -EINVAL;
++      info_header = netlink_get_info(state, BATADV_CMD_GET_ORIGINATORS, NULL);
++      free(info_header);
++
++      if (strlen(algo_name_buf) == 0)
++              return last_err;
++
++      if (!strcmp("BATMAN_IV", algo_name_buf))
++              header = "IF             Neighbor              last-seen\n";
++      if (!strcmp("BATMAN_V", algo_name_buf))
++              header = "         Neighbor   last-seen      speed           IF\n";
++
++      if (!header)
++              return -EINVAL;
++
+       return netlink_print_common(state, orig_iface, read_opts,
+                                   orig_timeout, watch_interval,
+-                                  "IF             Neighbor              last-seen\n",
++                                  header,
+                                   BATADV_CMD_GET_NEIGHBORS,
+                                   neighbors_callback);
+ }